package modeloapplicacion;

import java.util.LinkedList;
import java.util.List;

import model.Aplicacion.Agenda;
import simulaPersistencia.ContactoHome;
import clasesPrincipales.Ciudad;
import clasesPrincipales.Contacto;



public class GuardadorDeBusquedas {

	private List<List<Contacto>> paginas;
	private int paginaActual;

	public GuardadorDeBusquedas() {}

	public void buscar(String nombre, String mail, String tel, String ciudad) {
		Contacto ejContacto = (Contacto) Agenda.getHome(Contacto.class).createExample();
		
		ejContacto.setNombre(nombre);
		ejContacto.setMail(mail);
		ejContacto.setTelefono(tel);
		// si la ciudad es vacia, no se ingreso
		if (ciudad != "") {
			Ciudad ejCiudad = new Ciudad (ciudad);
			ejContacto.setCiudad(ejCiudad);
		}
		List<Contacto> resultados = ((ContactoHome)Agenda.getHome(Contacto.class)).buscarByExample(ejContacto);
		
		this.paginar(resultados);
	}

	public boolean haySiguiente() {
		return this.paginaActual != (this.paginas.size() -1);
	}
	
	public boolean hayAnterior() {
		return this.paginaActual != 0;
	}
	

	public void siguiente() {
		this.paginaActual++;
	}
	
	public void anterior() {
		this.paginaActual--;
	}
	
	public List<Contacto> resultados() {
		return this.paginas.get(this.paginaActual);
	}
	
	private void paginar(List<Contacto> resultados) {
		// vacio la lista
		this.paginas = new LinkedList<List<Contacto>>();
		if (resultados.isEmpty()) {
			// si no hay resultados, no hay paginas
			this.paginas.add(new LinkedList<Contacto>());
		}
		else {
			while (!resultados.isEmpty()) {
				List<Contacto> page = new LinkedList<Contacto>();
				// hasta 4 por pagina
				for (int i=0; i<=3; i++) {
					if (!resultados.isEmpty()) {
						page.add( resultados.get(0) );
						resultados.remove(0);
					}
					else {
						break;
					}
				}
				this.paginas.add(page);
			}
		}
		// la pagina actual es la de inicio
		this.paginaActual = 0;
	}
	
}